package com.lyy.common.utils;

import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * @author 俞伟
 * @version 1.0
 * @date 2020/7/4
 * @description com.tongsheng.common.utils
 */
public class CommonUtils {
    /**
     * 是否为非空 true-是  false-否
     *
     * @param obj 是否为非空的对象
     * @return boolean
     */
    public static boolean isNotEmpty(Object obj) {

        return !isEmpty(obj);
    }

    /**
     * 是否为空 true-是  false-否
     *
     * @param obj 是否为空的对象
     * @return boolean
     */
    public static boolean isEmpty(Object obj) {
        if (obj != null) {
            if (obj instanceof CharSequence) {
                return ((CharSequence) obj).length() == 0;

            } else if (obj instanceof Collection) {
                return ((Collection<?>) obj).isEmpty();

            } else if (obj instanceof Map<?, ?>) {
                return ((Map<?, ?>) obj).isEmpty();

            } else if (obj.getClass().isArray()) {
                return Array.getLength(obj) == 0;
            }
            return false;
        }
        return true;
    }

    /**
     * 如果字符为Null则返回 "" 串
     *
     * @param str 需要处理的字符串
     * @return
     */
    public static String trim(String str) {

        return str == null ? "" : str.trim();
    }

    /**
     * 如果字符str为Null则返回 value串
     *
     * @param str   需要处理的字符串
     * @param value 当需要处理的字符串为Null或""时 返回的默认值
     * @return
     */
    public static String trim(String str, String value) {

        return StringUtils.isEmpty(str) ? value : StringUtils.trim(str);
    }

    /**
     * 判断字符串是否数字
     *
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("[0-9]*");
        return pattern.matcher(str).matches();
    }

    public static boolean isNum(String str) {
        Pattern pattern = Pattern.compile("^-?[0-9]+");
        if (pattern.matcher(str).matches()) {
            //数字
            return true;
        } else {
            //非数字
            return false;
        }
    }

    /**
     * 将null转空字符串
     * @param str
     * @return
     */
    public static String getStr(String str) {
        return StringUtils.isNotBlank(str) ? str : "";
    }
}
